#pragma once
#include <vector>
#include "listeners.h"

class CFloor;
typedef std::vector<CFloor*> FloorsCollection;

struct IElevator
{
	virtual const PassengerCollection& GetLoadedPassengers() const = 0;
	virtual size_t GetElevatorPos() const = 0;
	virtual bool UpDirection() const = 0;
	virtual size_t GetCapacity() const = 0;
	virtual size_t GetAverageWaitTime() const = 0;
};

struct IFloorsContainer
{
	virtual const FloorsCollection& GetFloors() const = 0;
	virtual IElevator* GetElevator() = 0;
	virtual size_t GetSteps() const = 0;
	virtual size_t GetIntensity() const = 0;
	virtual size_t GetTotallyTransported() const = 0;
	virtual bool ShouldStop() const = 0;
	virtual size_t GetAverageElevatorLoad() const = 0;
};
